package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.*;

/**
 * @program: wxzj
 * @description
 * @author: wxr
 * @create: 2019-04-29 15:11
 **/
public interface BaseModifyReqService {
    /**
     * 获取待审批修改列表
     *
     * @param page
     * @param baseModifyReq
     * @return
     */
    PageInfo<BaseModifyReq> getAuditUpdateList(Page page, BaseModifyReq baseModifyReq);


    /**
     * 修改审批流程
     *
     * @param baseModifyReq
     * @return
     */
    CommonResult update(BaseModifyReq baseModifyReq);

    /**
     * 变更审核修改人
     *
     * @return
     */
    String userName();

    /**
     * 新增变更记录
     *
     * @param baseModifyReq 变更实体
     * @return 新增结果
     */
    CommonResult insert(BaseModifyReq baseModifyReq);

    /**
     * 查询变更信息
     */
    PageInfo<BaseModifyReq> getList(Page page, BaseModifyReq baseModifyReq);

    /**
     * 查询业主信息变更列表
     *
     * @param page
     * @param baseModifyReq
     * @return
     */
    PageInfo<BaseModifyReq> getChangeOwnerList(Page page, BaseModifyReq baseModifyReq);

    /**
     * 房屋变更审核列表
     */
    PageInfo<BaseModifyReq> selectUpdate(Page page, BaseModifyReq baseModifyReq);

    /**
     * 房屋信息变更列表
     */
    PageInfo<BaseModifyReq> selectUpdateHouseList(Page page, BaseModifyReq baseModifyReq);

    /**
     * 自然幢变更审核列表
     *
     * @param page
     * @param baseModifyReq
     * @param flowType
     * @return
     */
    PageInfo<BaseModifyReq> getUpdateList(Page page, BaseModifyReq baseModifyReq, String flowType);

    /**
     * 自然幢变更查询列表
     *
     * @param page
     * @param baseModifyReq
     * @return
     */
    PageInfo<BaseModifyReq> getUpdate(Page page, BaseModifyReq baseModifyReq);

    /**
     * 模糊查询业主信息变更列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 自然幢信息
     */
    PageInfo<BaseOwnerFuzzy> ownerModifyFuzzySearch(Page page, String param);

    /**
     * 模糊查询小区变更审核列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 小区变更审核列表
     */
    PageInfo<BaseRegionInfo> regionModifyFuzzySearch(Page page, String param);

    /**
     * 模糊查询自然幢变更审核列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 自然幢变更审核列表
     */
    PageInfo<BaseBuildInfo> buildModifyFuzzySearch(Page page, String param);

    /**
     * 模糊查询业主变更审核列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 业主变更审核列表
     */
    PageInfo<BaseOwnerFuzzy> ownerModifyAuditFuzzySearch(Page page, String param);

    /**
     * 模糊查询房屋调换审核列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 房屋调换审核列表
     */
    PageInfo<BaseBuildModifyDetail> houseModifyAuditFuzzySearch(Page page, String param);

    /**
     * 模糊查询房屋合并/拆分审核列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 房屋合并/拆分审核列表
     */
    PageInfo<SplitMergeReqList> splitMergeAuditFuzzySearch(Page page, String param);

    /**
     * 模糊查询房屋变更审核列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 房屋变更审核列表
     */
    PageInfo<BaseModifyReq> houseChangeAuditFuzzySearch(Page page, String param);

    /**
     * 模糊查询小区变更查询列表
     *
     * @param page       分页实体
     * @param param      模糊查询参数
     * @param businessId 小区ID
     * @return 小区变更查询列表
     */
    PageInfo<BaseModifyReq> regionAuditSearchFuzzy(Page page, String param, String businessId);

    /**
     * 模糊查询自然幢变更查询列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 自然幢变更查询列表
     */
    PageInfo<BaseModifyReq> buildAuditSearchFuzzy(Page page, String param);

    /**
     * 模糊查询房屋调换变更查询列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 房屋调换变更查询列表
     */
    PageInfo<BaseBuildModifyDetail> houseModifyAuditSearchFuzzy(Page page, String param);

    /**
     * 模糊查询房屋变更查询列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 房屋变更查询列表
     */
    PageInfo<BaseModifyReq> houseChangeAuditSearchFuzzy(Page page, String param);

    PageInfo<BaseModifyReq> houseChangeAuditSearchFuzzyByHouse(Page page, BaseHouseInfo baseHouseInfo);

    /**
     * 模糊查询房屋业主变更查询列表
     *
     * @param page  分页实体
     * @param param 模糊查询参数
     * @return 房屋业主变更查询列表
     */
    PageInfo<BaseModifyReq> ownerAuditSearchFuzzy(Page page, String param);

    /**
     * 业主变更查询列表
     *
     * @param baseModifyReq
     * @param page
     * @return
     */
    PageInfo<BaseModifyReq> selectChangeOwner(BaseModifyReq baseModifyReq, Page page);

    /**
     * 业主变更审核列表
     *
     * @param baseModifyReq
     * @param page
     * @return
     */
    PageInfo<BaseModifyReq> getOwnerUpdateList(BaseModifyReq baseModifyReq, Page page);

    /**
     * 结构变更提交审核
     *
     * @param id
     * @return
     */
    CommonResult addModify(String id, String buildBild, String modifyCause);

    /**
     * 变更审核
     *
     * @param id
     * @param opinion 审核意见
     * @param mark
     * @return
     */
    CommonResult changeResidentialCommittee(String buildNo, String id, String opinion, String mark);

    /**
     * 变更审核查询
     *
     * @param baseModifyReq
     * @param page
     * @return
     */
    PageInfo<BaseModifyReq> getCellUpdateList(BaseModifyReq baseModifyReq, Page page);

    /**
     * 结构变更查询列表
     *
     * @param baseModifyReq
     * @param page
     * @return
     */
    PageInfo<BaseModifyReq> selectChangeCell(BaseModifyReq baseModifyReq, Page page);

    /**
     * 房屋结构变更更
     *
     * @param id          单元id集合
     * @param modifyCause
     * @return
     */
    CommonResult addModifyCell(String id, String buildNo, String modifyCause);

    /**
     * 房屋结构变更审核列表
     *
     * @param baseModifyReq
     * @param page
     * @return
     */
    PageInfo<BaseModifyReq> getHouseUpdateList(BaseModifyReq baseModifyReq, Page page);

    /**
     * 房屋结构变更查询列表
     *
     * @param baseModifyReq
     * @param page
     * @return
     */
    PageInfo<BaseModifyReq> selectChangeHouse(BaseModifyReq baseModifyReq, Page page);

    /**
     * 单元结构变更重置
     *
     * @param id
     * @return
     */
    CommonResult resetting(String id, String type);
}
